// store.js vuex是vue的数据共享中心文件，可以把页面私有数据也放到这里面

import Vue from 'vue'
import Vuex from 'vuex';

Vue.use(Vuex)

export default new Vuex.Store({
    // 数据放置节点，存放全局共享数据
    state: {

        // 用户是否登录
        isLogin: false,

        // 用户id
        userid: '',

        // 用户信息配置
        userinfo: [],

        // 是否勾选协议书
        isChecked: false,

        // token
        token: '',
    },
    // 该节点才有权限修改数据节点中的数据
    mutations: {

        // 改变用户登录状态函数 
        setIslogin (state, status) {
            state.isLogin = status
        },

        // 存储或删除用户id
        setUserid (state, status){
            state.userid = status
        },

        // 存储用户信息
        setUserInfo (state, data){
            state.userinfo = data
        },

        // 协议书勾选状态， 更新isChecked值的方法
        setIsChecked(state, value) {
            state.isChecked = value;
        },

        // 设置token
        setToken(state,value){
            state.token = value
        },
    },
    // 该节点用于处理异步任务
    actions: {

        // 自动加载localStorage中的数据
        loadLocalData({ commit }) {

            // 加载登录状态
            if (localStorage.getItem('localLoginStatus')) {
                const localLoginStatus = JSON.parse(localStorage.getItem('localLoginStatus'))
                commit('setIslogin', localLoginStatus)
            }

            // 加载用户本地信息
            
            if (localStorage.getItem('localUserinfo')) {
                const localUserinfo = JSON.parse(localStorage.getItem('localUserinfo'))
                commit('setUserInfo', localUserinfo)
            }

            
            if (localStorage.getItem('token')) {
                const token = JSON.parse(localStorage.getItem('token')).token
                commit('setToken', token)
            }
            // console.log(token);
            // ...其他需要加载的本地数据
        }
    },
    getters: {
        // 获取isChecked的值
        isChecked: state => state.isChecked
    },
    modules: {
        
    }
})